    PCefPrintDialogCallback = ^TCefPrintDialogCallback;
    PCefPrintJobCallback = ^TCefPrintJobCallback;


    // Callback structure for asynchronous continuation of print dialog requests.
    TCefPrintDialogCallback = record
        // Base structure.
        base: TCefBase;

        // Continue printing with the specified |settings|.
        cont: procedure(self: PCefPrintDialogCallback; settings: PCefPrintSettings); cconv;

        // Cancel the printing.
        cancel: procedure(self: PCefPrintDialogCallback); cconv;
    end;

    // Callback structure for asynchronous continuation of print job requests.
    TCefPrintJobCallback = record
        // Base structure.
        base: TCefBase;

        // Indicate completion of the print job.
        cont: procedure(self: PCefPrintJobCallback); cconv;
    end;

    // Implement this structure to handle printing on Linux. The functions of this
    // structure will be called on the browser process UI thread.
    TCefPrintHandler = record
        // Base structure.
        base: TCefBase;

        // Synchronize |settings| with client state. If |get_defaults| is true (1)
        // then populate |settings| with the default print settings. Do not keep a
        // reference to |settings| outside of this callback.
        on_print_settings: procedure(
            self: PCefPrintHandler;
            settings: PCefPrintSettings;
            get_defaults: Integer); cconv;

        // Show the print dialog. Execute |callback| once the dialog is dismissed.
        // Return true (1) if the dialog will be displayed or false (0) to cancel the
        // printing immediately.
        on_print_dialog: function(
            self: PCefPrintHandler;
            has_selection: Integer;
            callback: PCefPrintDialogCallback): Integer; cconv;

        // Send the print job to the printer. Execute |callback| once the job is
        // completed. Return true (1) if the job will proceed or false (0) to cancel
        // the job immediately.
        on_print_job: function(
            self: PCefPrintHandler;
            const document_name: PCefString;
            const pdf_file_path: PCefString;
            callback: PCefPrintJobCallback): Integer; cconv;

        // Reset client state related to printing.
        on_print_reset: procedure(self: PCefPrintHandler); cconv;
    end;


